"""
异步编程（异步I/O）- 实现了协作式并发，大幅度的提升CPU利用率
"""
import asyncio


# normal abnormal
# symmetric asymmetric
# synchronous asynchronous
# 被async修饰的函数是异步函数，调用异步函数不是直接得到返回值
# 而是创建一个协程对象（可以跟其他子程序相互协作的子程序）
async def display(num):
    print(num)
    await asyncio.sleep(1)


# 调用异步函数得到的是一个协程对象（coroutine object）
cos_list = [display(n) for n in range(1, 11)]
# print(cos_list)
# 启动一个事件循环，将协程对象注册到事件循环上（注册之后才能协作）
loop = asyncio.get_event_loop()
# 将列表中的协程对象处理成一个Task对象然后挂到事件循环上
# 相当于将10个协程对象都注册到了事件循环上
loop.run_until_complete(asyncio.wait(cos_list))
loop.close()
